
package com.xbongbong.sys.domain.entity;

import com.alibaba.fastjson.JSONObject;
import com.xbongbong.paas.toolbox.util.DateTimeUtil;
import com.xbongbong.paas.toolbox.wrap.Entity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.persistence.Transient;

/**
 * @author oldVersion
 */
@Setter
@Getter
@ToString
public class CompanyEntity extends Entity {

	/** Comment for <code>serialVersionUID</code> */
	private static final long serialVersionUID = 6082437901117994387L;

	//========== properties ==========

	/**
	 * 授权方企业id
	 */
	private String corpid;
	/**
	 * 授权方企业名称
	 */
	private String corpName;
	/**
	 * 企业授权状态 -1：解除授权 0：禁用 1：正常 2：待激活
	 */
	private Integer status;
	/**
	 * 表示企业所属行业
	 */
	private String industry;
	/**
	 * 企业是否认证
	 */
	private Integer isAuthenticated;
	/**
	 * 企业logo
	 */
	private String corpLogoUrl;
	/**
	 *
	 */
	private String authUserId;
	/**
	 * 添加时间
	 */
	private Long addTime;
	/**
	 * 更新时间
	 */
	private Long updateTime;
	/**
	 * 删除标记
	 */
	private Integer del;
	/**
	 * 表示邀请码，只有填写过且是ISV自己邀请码的数据才会返回,否则值为空字符串
	 */
	private String inviteCode;
	/**
	 * 企业邀请链接
	 */
	private String inviteUrl;
	/**
	 * 序列号
	 */
	private String licenseCode;
	private String permanentCode;
	private String agentId;
	/**
	 * 是否接受推送消息,1推送，0不推送
	 */
	private Integer isPushMessage;
	/**
	 * 渠道码
	 */
	private String authChannel;
	/**
	 * 来源 1:钉钉，2:独立版
	 */
	private Integer source;

	/* ================ admin扩展字段 ==================== */

	/**
	 * 购买次数
	 */
	private Integer vipNum;

	/**
	 * 订单类型
	 */
	private Integer orderType;
	/**
	 * 套餐开始时间
	 */
	private Long feeStartTime;
	/**
	 * 套餐结束时间
	 */
	private Long feeEndTime;
	/**
	 * 套餐名
	 */
	private String feeName;
	/**
	 * 套餐允许人数
	 */
	private Integer feeUserNum;
	/**
	 * 套餐类型
	 */
	private Integer feeType;
	/**
	 * 健康度
	 */
	private float healthScore;
	/**
	 * 套餐名
	 */
	private Integer userNum;
	/**
	 * 是否免费套餐,不存库
	 */
	private Integer isFree;
	/**
	 * 授权企业所在城市
	 */
	private String corpCity;
	/**
	 * 授权企业所在省份
	 */
	private String corpProvince;

    /**
     * 主企业
     */
    private String mainCorpid;
	/**
	 * 旧套餐结束时间
	 */
	private Long renewTime;

	/**
	 * 用于saas和pro联合部署，serviceType
	 * - 值为 saas 或为空时 表示该公司使用原saas服务；
	 * - 值为 pro 表示该公司使用pro服务；
	 */
	@Transient
	private String serviceType;
    /**
     * 规模
     */
    private String scale;

	public CompanyEntity() {
		Long now = DateTimeUtil.getInt();
		this.del = 0;
		this.addTime = now;
		this.updateTime = now;
		this.isPushMessage = 1;
	}
    //========== getters and setters ==========

	public void formatCompanyData(JSONObject authInfo) {
		JSONObject authCorpInfo = authInfo.getJSONObject("auth_corp_info");
		this.corpid = authCorpInfo.getString("corpid");
		this.corpName = authCorpInfo.getString("corp_name");
		this.corpLogoUrl = authCorpInfo.getString("corp_logo_url");
		this.industry = authCorpInfo.getString("industry");
		this.inviteCode = authCorpInfo.getString("invite_code");
		this.licenseCode = authCorpInfo.getString("license_code");
		this.isAuthenticated = "true".equals(authCorpInfo.getString("is_authenticated")) ? 1 : 0;
		this.inviteUrl = authCorpInfo.getString("invite_url");
		//渠道码
		this.authChannel = authCorpInfo.getString("auth_channel");
		this.corpProvince = authCorpInfo.getString("corp_province");
		this.corpCity = authCorpInfo.getString("corp_city");

		JSONObject authUserInfo = authInfo.getJSONObject("auth_user_info");
		this.authUserId = authUserInfo.getString("userId");

		//更新修改时间
		this.updateTime = DateTimeUtil.getInt();
	}
}

